/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.sigodonto.view.managedbean;

import br.com.sigodonto.model.dao.DaoGenerico;
import br.com.sigodonto.model.entity.Dentista;
import br.com.sigodonto.model.entity.Especialidade;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

/**
 *
 * @author Fidelis
 */
@ManagedBean
@ViewScoped
public class ConfigurarContaMB implements Serializable {

    /**
     * Creates a new instance of ConfigurarContaMB
     */
    private String[] estados = {"Acre", "Alagoas", "Amapá", "Amazonas", "Bahia", "Ceará", "Distrito Federal", "Espírito Santo", "Goiás", "Maranhão",
        "Mato Grosso", "Mato Grosso do Sul", "Minas Gerais", "Pará", "Paraíba", "Paraná", "Pernambuco", "Piauí", "Rio de Janeiro", "Rio Grande do Norte",
        "Rio Grande do Sul", "Rondônia", "Roraima", "Santa Catariana", "São Paulo", "Sergipe", "Tocantins"};
    private Dentista dentista;
    private String senha1;
    private String senha2;
    private String senhaat;
    private List<Especialidade> especialidadesTodas;
    private List<String> especialidadesSelecionadas;
    private Especialidade especialidadeCadastrar;
    private DaoGenerico daoGenerico;

    public ConfigurarContaMB() {
        this.daoGenerico = new DaoGenerico();
        this.especialidadesTodas = this.daoGenerico.listarTodos(Especialidade.class);
        this.especialidadeCadastrar = new Especialidade();
        this.especialidadesSelecionadas = new ArrayList<String>();
        this.carregarDentista();
    }

    public Dentista getDentista() {
        return dentista;
    }

    public void setDentista(Dentista dentista) {
        this.dentista = dentista;
    }

    public String[] getEstados() {
        return estados;
    }

    public void setEstados(String[] estados) {
        this.estados = estados;
    }

    public String getSenha1() {
        return senha1;
    }

    public void setSenha1(String senha1) {
        this.senha1 = senha1;
    }

    public String getSenha2() {
        return senha2;
    }

    public void setSenha2(String senha2) {
        this.senha2 = senha2;
    }

    public String getSenhaat() {
        return senhaat;
    }

    public void setSenhaat(String senhaat) {
        this.senhaat = senhaat;
    }

    public List<Especialidade> getEspecialidadesTodas() {
        return especialidadesTodas;
    }

    public void setEspecialidadesTodas(List<Especialidade> especialidadesTodas) {
        this.especialidadesTodas = especialidadesTodas;
    }

    public List<String> getEspecialidadesSelecionadas() {
        return especialidadesSelecionadas;
    }

    public void setEspecialidadesSelecionadas(List<String> especialidadesSelecionadas) {
        this.especialidadesSelecionadas = especialidadesSelecionadas;
    }

    public Especialidade getEspecialidadeCadastrar() {
        return especialidadeCadastrar;
    }

    public void setEspecialidadeCadastrar(Especialidade especialidadeCadastrar) {
        this.especialidadeCadastrar = especialidadeCadastrar;
    }

    public void atualizarDados() {
        FacesMessage message = new FacesMessage();

        String msg = "DENTISTA ATUALIZADO COM SUCESSO!";
        message.setSeverity(FacesMessage.SEVERITY_INFO);

        Dentista atualizado = this.daoGenerico.atualizar(this.dentista);

        if (atualizado == null) {
            msg = "ERRO AO ATUALIZAR DENTISTA!";
            message.setSeverity(FacesMessage.SEVERITY_ERROR);
        } else {
            this.dentista = atualizado;
        }

        message.setSummary(msg);
        FacesContext.getCurrentInstance().addMessage(null, message);
    }

    public void atualizarDadosProfissionais() {
        FacesMessage message = new FacesMessage();

        String msg = "DENTISTA ATUALIZADO COM SUCESSO!";
        message.setSeverity(FacesMessage.SEVERITY_INFO);

        if (!this.especialidadesSelecionadas.isEmpty()) {
            List<Especialidade> especialidades = new ArrayList<Especialidade>();
            for (String string : especialidadesSelecionadas) {
                Long id = new Long(string);
                for (Especialidade especialidade : especialidadesTodas) {
                    if (especialidade.getId().equals(id)) {
                        especialidades.add(especialidade);
                    }
                }
            }
            this.dentista.setEspecialidades(especialidades);
        }

        Dentista atualizado = this.daoGenerico.atualizar(this.dentista);

        if (atualizado == null) {
            msg = "ERRO AO ATUALIZAR DENTISTA!";
            message.setSeverity(FacesMessage.SEVERITY_ERROR);
        } else {
            this.dentista = atualizado;
            this.especialidadesSelecionadas = new ArrayList<String>();
        }

        message.setSummary(msg);
        FacesContext.getCurrentInstance().addMessage(null, message);
    }

    public void atualizarDadosConta() {
        FacesMessage message = new FacesMessage();

        String msg = "DENTISTA ATUALIZADO COM SUCESSO!";
        message.setSeverity(FacesMessage.SEVERITY_INFO);

        if (this.senhaat.equals(this.dentista.getContaUsuario().getSenha())) {
            if (senha1.equals(senha2)) {
                this.dentista.getContaUsuario().setSenha(senha1);
                Dentista atualizado = this.daoGenerico.atualizar(this.dentista);

                if (atualizado == null) {
                    msg = "ERRO AO ATUALIZAR DENTISTA!";
                    message.setSeverity(FacesMessage.SEVERITY_ERROR);
                } else {
                    this.dentista = atualizado;
                }
            } else {
                msg = "CONFIRME A SENHA NOVAMENTE!";
                message.setSeverity(FacesMessage.SEVERITY_ERROR);
            }
        } else {
            msg = "SENHA ATUAL INCORRETA!";
            message.setSeverity(FacesMessage.SEVERITY_ERROR);
        }



        message.setSummary(msg);
        FacesContext.getCurrentInstance().addMessage(null, message);
    }

    private void carregarDentista() {
        ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
        HttpSession session = (HttpSession) externalContext.getSession(true);
        this.dentista = (Dentista) session.getAttribute("usuario");
        if (dentista != null) {
            System.out.println("Certo dentista");
        } else {
            System.out.println("Errado dentista");
        }
    }
}
